home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / RTLWIN16.PAK / PENWIN.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  26KB  |  826 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * penwin.h -    Pen Windows functions, types, and definitions                 *
  4. *                                                                             *
  5. \*****************************************************************************/
  6.  
  7. /* $Copyright: 1987$ */
  8.  
  9. #ifndef __PENWIN_H      /* prevent multiple includes */
  10. #define __PENWIN_H
  11.  
  12. #ifndef __WINDOWS_H
  13. #include <windows.h>    /* <windows.h> must be included */
  14. #endif  /* __WINDOWS_H */
  15.  
  16. #ifndef RC_INVOKED
  17. #pragma pack(push, 1)   /* Assume byte packing throughout */
  18. #endif /* RC_INVOKED */
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif  /* __cplusplus */
  23.  
  24. /* If included with the 3.0 windows.h, define compatible aliases */
  25. #if !defined(WINVER) || (WINVER < 0x030a)
  26. #define CALLBACK    FAR PASCAL
  27. #define UINT        WORD
  28. #define WINAPI      FAR PASCAL
  29. #define LPARAM      LONG
  30. #define WPARAM      WORD
  31. #endif  /* WIN3.0 */
  32.  
  33. /****** General Pen Windows Definitions *************************************/
  34.  
  35. typedef int                    REC;
  36. typedef LONG                   SYV;
  37. typedef SYV FAR                *LPSYV;
  38. typedef HANDLE                 HREC;
  39. typedef int                    CL;
  40. typedef LONG                   ALC;
  41. typedef UINT                   HKP;
  42. typedef int (CALLBACK * LPDF)(int, LPVOID, LPVOID, int, DWORD, DWORD);
  43.  
  44. #define BITPENUP               0x8000
  45. #define FPenUpX(x)             (((x) & BITPENUP)!=0)
  46.  
  47. /* Default pen cursor to indicate writing, points northwest */
  48. #define IDC_PEN                MAKEINTRESOURCE(32631)
  49.  
  50. /* alternate select cursor: upsidedown standard arrow, points southeast */
  51. #define IDC_ALTSELECT          MAKEINTRESOURCE(32501)
  52.  
  53. #define RC_WDEFAULT            (0xFFFF)
  54. #define RC_LDEFAULT            (0xFFFFFFFFL)
  55. #define RC_WDEFAULTFLAGS       (0x8000)
  56. #define RC_LDEFAULTFLAGS       (0x80000000L)
  57.  
  58. /* HIWORD(SYV) defines and detection macros */
  59.  
  60. #define SYVHI_SPECIAL          0
  61. #define FIsSpecial(syv)        (HIWORD((syv))==SYVHI_SPECIAL)
  62. #define SYVHI_ANSI             1
  63. #define FIsAnsi(syv)           (HIWORD((syv))==SYVHI_ANSI)
  64. #define SYVHI_GESTURE          2
  65. #define FIsGesture(syv)        (HIWORD((syv))==SYVHI_GESTURE)
  66. #define SYVHI_KANJI            3
  67. #define FIsKanji(syv)          (HIWORD((syv))==SYVHI_KANJI)
  68. #define SYVHI_SHAPE            4
  69. #define FIsShape(syv)          (HIWORD((syv))==SYVHI_SHAPE)
  70. #define SYVHI_UNICODE          5
  71. #define FIsUniCode(syv)        (HIWORD((syv))==SYVHI_UNICODE)
  72. #define SYVHI_VKEY             6
  73. #define FIsVKey(syv)           (HIWORD((syv))==SYVHI_VKEY)
  74.  
  75. /* Macros to convert between SYV and ANSI */
  76.  
  77. #define ChSyvToAnsi(syv)       ((BYTE) (LOBYTE(LOWORD((syv)))))
  78. #define SyvCharacterToSymbol(c) ((LONG)(unsigned char)(c) | 0x00010000)
  79. #define SyvKanjiToSymbol(c) ((LONG)(WORD)(c) | 0x00030000)
  80.  
  81. /* SYV values with special meanings to Pen Windows */
  82.  
  83. #define SYV_NULL               0x00000000L
  84. #define SYV_UNKNOWN            0x00000001L
  85. #define SYV_EMPTY              0x00000003L
  86. #define SYV_BEGINOR            0x00000010L
  87. #define SYV_ENDOR              0x00000011L
  88. #define SYV_OR                 0x00000012L
  89. #define SYV_SOFTNEWLINE        0x00000020L
  90. #define SYV_SPACENULL          SyvCharacterToSymbol('\0')
  91.  
  92. /* SYV values for gestures (map into UNICODE space) */
  93.  
  94. #define SYV_KKCONVERT          0x0002FFD4L
  95. #define SYV_CLEAR              0x0002FFD5L
  96. #define SYV_EXTENDSELECT       0x0002FFD8L
  97. #define SYV_UNDO               0x0002FFD9L
  98. #define SYV_COPY               0x0002FFDAL
  99. #define SYV_CUT                0x0002FFDBL
  100. #define SYV_PASTE              0x0002FFDCL
  101. #define SYV_CLEARWORD          0x0002FFDDL
  102. #define SYV_USER               0x0002FFDEL      /* ;Reserved */
  103. #define SYV_CORRECT            0x0002FFDFL
  104.  
  105. #define SYV_BACKSPACE          0x00020008L
  106. #define SYV_TAB                0x00020009L
  107. #define SYV_RETURN             0x0002000DL
  108. #define SYV_SPACE              0x00020020L
  109.  
  110. #define FIsStdGesture(syv)     \
  111.      ((syv) == SYV_CLEAR       \
  112.    || (syv) == SYV_EXTENDSELECT\
  113.    || (syv) == SYV_UNDO        \
  114.    || (syv) == SYV_COPY        \
  115.    || (syv) == SYV_CUT         \
  116.    || (syv) == SYV_PASTE       \
  117.    || (syv) == SYV_CLEARWORD   \
  118.    || (syv) == SYV_KKCONVERT   \
  119.    || (syv) == SYV_USER        \
  120.    || (syv) == SYV_CORRECT)
  121.  
  122. #define FIsAnsiGesture(syv)    \
  123.      ((syv) == SYV_BACKSPACE   \
  124.    || (syv) == SYV_TAB         \
  125.    || (syv) == SYV_RETURN      \
  126.    || (syv) == SYV_SPACE)
  127.  
  128. /* Application specific gestures, Circle a-z and Circle A-Z */
  129.  
  130. #define SYV_APPGESTUREMASK     0x00020000L
  131. #define SYV_CIRCLEUPA          0x000224B6L
  132. #define SYV_CIRCLEUPZ          0x000224CFL
  133. #define SYV_CIRCLELOA          0x000224D0L
  134. #define SYV_CIRCLELOZ          0x000224E9L
  135.  
  136. /* Gesture Macros */
  137.  
  138. #define FIsLoAppGesture(syv)   (syv >= SYV_CIRCLELOA && syv <= SYV_CIRCLELOZ)
  139. #define FIsUpAppGesture(syv)   (syv >= SYV_CIRCLEUPA && syv <= SYV_CIRCLEUPZ)
  140. #define FIsAppGesture(syv)     (syv>=SYV_CIRCLEUPA && syv<=SYV_CIRCLELOZ)
  141.  
  142. #define SyvAppGestureFromLoAnsi(ansi) ((DWORD)(BYTE)ansi- 'a' + SYV_CIRCLELOA)
  143. #define SyvAppGestureFromUpAnsi(ansi) ((DWORD)(BYTE)ansi- 'A' + SYV_CIRCLEUPA)
  144. #define AnsiFromSyvAppGesture(syv) ChSyvToAnsi( \
  145.     syv-(FIsUpAppGesture(syv)? SYV_CIRCLEUPA-(SYV)'A': SYV_CIRCLELOA-(SYV)'a'))
  146.  
  147. /* SYV definitions for shapes */
  148.  
  149. #define SYV_SHAPELINE          0x00040001L
  150. #define SYV_SHAPEELLIPSE       0x00040002L
  151. #define SYV_SHAPERECT          0x00040003L
  152. #define SYV_SHAPEMIN           SYV_SHAPELINE
  153. #define SYV_SHAPEMAX           SYV_SHAPERECT
  154.  
  155. /****** Recognition Error Codes *********************************************/
  156.  
  157. #define REC_OEM                (-1024)
  158. #define REC_LANGUAGE           (-48)
  159. #define REC_GUIDE              (-47)
  160. #define REC_PARAMERROR         (-46)
  161. #define REC_INVALIDREF         (-45)
  162. #define REC_RECTEXCLUDE        (-44)
  163. #define REC_RECTBOUND          (-43)
  164. #define REC_PCM                (-42)
  165. #define REC_RESULTMODE         (-41)
  166. #define REC_HWND               (-40)
  167. #define REC_ALC                (-39)
  168. #define REC_ERRORLEVEL         (-38)
  169. #define REC_CLVERIFY           (-37)
  170. #define REC_DICT               (-36)
  171. #define REC_HREC               (-35)
  172. #define REC_BADEVENTREF        (-33)
  173. #define REC_NOCOLLECTION       (-32)
  174.  
  175. #define REC_DEBUG              (-32)
  176.  
  177. #define REC_POINTEREVENT       (-31)
  178. #define REC_BADHPENDATA        (-9)
  179. #define REC_OOM                (-8)
  180. #define REC_NOINPUT            (-7)
  181. #define REC_NOTABLET           (-6)
  182. #define REC_BUSY               (-5)
  183. #define REC_BUFFERTOOSMALL     (-4)
  184. #define REC_ABORT              (-3)
  185.  
  186. #define REC_OVERFLOW           (-1)
  187.  
  188. #define REC_OK                 0
  189. #define REC_TERMBOUND          1
  190. #define REC_TERMEX             2
  191. #define REC_TERMPENUP          3
  192. #define REC_TERMRANGE          4
  193. #define REC_TERMTIMEOUT        5
  194. #define REC_DONE               6
  195. #define REC_TERMOEM            512
  196.  
  197. /****** Pen Driver Structures and Entry points ******************************/
  198.  
  199. typedef struct tagOEMPENINFO
  200.    {
  201.    UINT wPdt;
  202.    UINT wValueMax;
  203.    UINT wDistinct;
  204.    }
  205.    OEMPENINFO, FAR *LPOEMPENINFO;
  206.  
  207. #define PDT_NULL               0
  208. #define PDT_PRESSURE           1
  209. #define PDT_HEIGHT             2
  210. #define PDT_ANGLEXY            3
  211. #define PDT_ANGLEZ             4
  212. #define PDT_BARRELROTATION     5
  213. #define PDT_OEMSPECIFIC        16
  214.  
  215. #define MAXOEMDATAWORDS        6
  216.  
  217. typedef struct tagPENPACKET
  218.    {
  219.    UINT wTabletX;
  220.    UINT wTabletY;
  221.    UINT wPDK;
  222.    UINT rgwOemData[MAXOEMDATAWORDS];
  223.    }
  224.    PENPACKET, FAR *LPPENPACKET;
  225.  
  226. typedef BOOL (CALLBACK * LPFNRAWHOOK)(LPPENPACKET);
  227.  
  228. typedef struct tagPENINFO
  229.    {
  230.    UINT cxRawWidth;
  231.    UINT cyRawHeight;
  232.    UINT wDistinctWidth;
  233.    UINT wDistinctHeight;
  234.    int nSamplingRate;
  235.    int nSamplingDist;
  236.    LONG lPdc;
  237.    int cPens;
  238.    int cbOemData;
  239.    OEMPENINFO rgoempeninfo[MAXOEMDATAWORDS];
  240.    UINT rgwReserved[8];
  241.    }
  242.    PENINFO, FAR *LPPENINFO;
  243.  
  244. #define PDC_INTEGRATED         0x00000001L
  245. #define PDC_PROXIMITY          0x00000002L
  246. #define PDC_RANGE              0x00000004L
  247. #define PDC_INVERT             0x00000008L
  248. #define PDC_RELATIVE           0x00000010L
  249. #define PDC_BARREL1            0x00000020L
  250. #define PDC_BARREL2            0x00000040L
  251. #define PDC_BARREL3            0x00000080L
  252.  
  253. typedef struct tagSTROKEINFO
  254.    {
  255.    UINT cPnt;
  256.    UINT cbPnts;
  257.    UINT wPdk;
  258.    DWORD dwTick;
  259.    }
  260.    STROKEINFO, FAR *LPSTROKEINFO;
  261.  
  262. typedef struct tagCALBSTRUCT
  263.    {
  264.    int wOffsetX;
  265.    int wOffsetY;
  266.    int wDistinctWidth;
  267.    int wDistinctHeight;
  268.    }
  269.    CALBSTRUCT, FAR *LPCALBSTRUCT;
  270.  
  271. /****** DRV_ values for pen driver specific messages ************************/
  272.  
  273. #define DRV_SetPenDriverEntryPoints    DRV_RESERVED+1
  274. #define DRV_RemovePenDriverEntryPoints DRV_RESERVED+2
  275. #define DRV_SetPenSamplingRate         DRV_RESERVED+3
  276. #define DRV_SetPenSamplingDist         DRV_RESERVED+4
  277. #define DRV_GetName                    DRV_RESERVED+5
  278. #define DRV_GetVersion                 DRV_RESERVED+6
  279. #define DRV_GetPenInfo                 DRV_RESERVED+7
  280. #define DRV_GetCalibration             DRV_RESERVED+11
  281. #define DRV_SetCalibration             DRV_RESERVED+12
  282.  
  283. VOID WINAPI UpdatePenInfo(LPPENINFO);
  284. BOOL WINAPI EndPenCollection(REC);
  285. REC  WINAPI GetPenHwData(LPPOINT, LPVOID, int, UINT, LPSTROKEINFO);
  286. REC  WINAPI GetPenHwEventData(UINT, UINT, LPPOINT, LPVOID, int, LPSTROKEINFO);
  287. VOID WINAPI PenPacket(VOID);
  288. BOOL WINAPI SetPenHook(HKP, LPFNRAWHOOK);
  289.  
  290. /****** Pen Hardware Constants **********************************************/
  291.  
  292. #define PDK_UP                 0x0000
  293. #define PDK_DOWN               0x0001
  294. #define PDK_BARREL1            0x0002
  295. #define PDK_BARREL2            0x0004
  296. #define PDK_BARREL3            0x0008
  297. #define PDK_TRANSITION         0x0010
  298. #define PDK_INVERTED           0x0080
  299. #define PDK_OUTOFRANGE         0x4000
  300. #define PDK_DRIVER             0x8000
  301. #define PDK_TIPMASK            0x0001
  302. #define PDK_SWITCHES           (PDK_DOWN|PDK_BARREL1|PDK_BARREL2|PDK_BARREL3)
  303.  
  304. #define PCM_PENUP              0x00000001L
  305. #define PCM_RANGE              0x00000002L
  306. #define PCM_INVERT             0x00000020L
  307. #define PCM_RECTEXCLUDE        0x00002000L
  308. #define PCM_RECTBOUND          0x00004000L
  309. #define PCM_TIMEOUT            0x00008000L
  310. #define PCM_ADDDEFAULTS        RC_LDEFAULTFLAGS /* 0x80000000L */
  311.  
  312. /****** Virtual Event Layer *************************************************/
  313.  
  314. VOID WINAPI PostVirtualKeyEvent(UINT, BOOL);
  315. VOID WINAPI PostVirtualMouseEvent(UINT, int, int);
  316. VOID WINAPI AtomicVirtualEvent(BOOL);
  317.  
  318. #define VWM_MOUSEMOVE          0x0001
  319. #define VWM_MOUSELEFTDOWN      0x0002
  320. #define VWM_MOUSELEFTUP        0x0004
  321. #define VWM_MOUSERIGHTDOWN     0x0008
  322. #define VWM_MOUSERIGHTUP       0x0010
  323.  
  324. /****** RC Definition *************************************************************/
  325.  
  326. #define CL_NULL                0
  327. #define CL_MINIMUM             1
  328. #define CL_MAXIMUM             100
  329. #define INKWIDTH_MINIMUM       0
  330. #define INKWIDTH_MAXIMUM       15
  331. #define ENUM_MINIMUM           1
  332. #define ENUM_MAXIMUM           4096
  333. #define MAXDICTIONARIES        16
  334.  
  335. typedef struct tagGUIDE
  336.    {
  337.    int xOrigin;
  338.    int yOrigin;
  339.    int cxBox;
  340.    int cyBox;
  341.    int cxBase;
  342.    int cyBase;
  343.    int cHorzBox;
  344.    int cVertBox;
  345.    int cyMid;
  346.    }
  347.    GUIDE, FAR *LPGUIDE;
  348.  
  349. typedef BOOL (CALLBACK * RCYIELDPROC)(VOID);
  350.  
  351. #define cbRcLanguageMax        44
  352. #define cbRcUserMax            32
  353. #define cbRcrgbfAlcMax         32
  354. #define cwRcReservedMax        8
  355.  
  356. typedef struct tagRC
  357.    {
  358.    HREC hrec;
  359.    HWND hwnd;
  360.    UINT wEventRef;
  361.    UINT wRcPreferences;
  362.    LONG lRcOptions;
  363.    RCYIELDPROC lpfnYield;
  364.    BYTE lpUser[cbRcUserMax];
  365.    UINT wCountry;
  366.    UINT wIntlPreferences;
  367.    char lpLanguage[cbRcLanguageMax];
  368.    LPDF rglpdf[MAXDICTIONARIES];
  369.    UINT wTryDictionary;
  370.    CL clErrorLevel;
  371.    ALC alc;
  372.    ALC alcPriority;
  373.    BYTE rgbfAlc[cbRcrgbfAlcMax];
  374.    UINT wResultMode;
  375.    UINT wTimeOut;
  376.    LONG lPcm;
  377.    RECT rectBound;
  378.    RECT rectExclude;
  379.    GUIDE guide;
  380.    UINT wRcOrient;
  381.    UINT wRcDirect;
  382.    int nInkWidth;
  383.    COLORREF rgbInk;
  384.    DWORD dwAppParam;
  385.    DWORD dwDictParam;
  386.    DWORD dwRecognizer;
  387.    UINT rgwReserved[cwRcReservedMax];
  388.    }
  389.    RC, FAR *LPRC;
  390.  
  391. typedef HANDLE HPENDATA;
  392.  
  393. typedef struct tagSYC
  394.    {
  395.    UINT wStrokeFirst;
  396.    UINT wPntFirst;
  397.    UINT wStrokeLast;
  398.    UINT wPntLast;
  399.    BOOL fLastSyc;
  400.    }
  401.    SYC, FAR *LPSYC;
  402.  
  403. #define wPntAll                (UINT)0xFFFF
  404. #define iSycNull               (-1)
  405.  
  406. typedef struct tagSYE
  407.    {
  408.    SYV syv;
  409.    LONG lRecogVal;
  410.    CL cl;
  411.    int iSyc;
  412.    }
  413.    SYE, FAR *LPSYE;
  414.  
  415. #define MAXHOTSPOT             8
  416.  
  417. typedef struct tagSYG
  418.    {
  419.    POINT rgpntHotSpots[MAXHOTSPOT];
  420.    int cHotSpot;
  421.    int nFirstBox;
  422.    LONG lRecogVal;
  423.    LPSYE lpsye;
  424.    int cSye;
  425.    LPSYC lpsyc;
  426.    int cSyc;
  427.    }
  428.    SYG, FAR *LPSYG;
  429.  
  430. typedef int (CALLBACK *ENUMPROC)(LPSYV, int, VOID FAR *);
  431.  
  432. typedef struct tagRCRESULT
  433.    {
  434.    SYG syg;
  435.    UINT wResultsType;
  436.    int cSyv;
  437.    LPSYV lpsyv;
  438.    HANDLE hSyv;
  439.    int nBaseLine;
  440.    int nMidLine;
  441.    HPENDATA hpendata;
  442.    RECT rectBoundInk;
  443.    POINT pntEnd;
  444.    LPRC lprc;
  445.    }
  446.    RCRESULT, FAR *LPRCRESULT;
  447.  
  448. #define RCRT_DEFAULT           0x0000
  449. #define RCRT_UNIDENTIFIED      0x0001
  450. #define RCRT_GESTURE           0x0002
  451. #define RCRT_NOSYMBOLMATCH     0x0004
  452. #define RCRT_PRIVATE           0x4000
  453. #define RCRT_NORECOG           0x8000
  454. #define RCRT_ALREADYPROCESSED  0x0008
  455. #define RCRT_GESTURETRANSLATED 0x0010
  456. #define RCRT_GESTURETOKEYS     0x0020
  457.  
  458. #define HKP_SETHOOK            0
  459. #define HKP_UNHOOK             0xFFFF
  460. #define HWR_RESULTS            0
  461. #define HWR_APPWIDE            1
  462.  
  463. #define PEN_NOINKWIDTH         0
  464. #define LPDFNULL               ((LPDF)NULL)
  465.  
  466. #define RPA_DEFAULT            1
  467.  
  468. /* GetGlobalRC return codes */
  469. #define GGRC_OK                0
  470. #define GGRC_DICTBUFTOOSMALL   1
  471. #define GGRC_PARAMERROR        2
  472.  
  473. /* SetGlobalRC return code flags */
  474. #define SGRC_OK                0x0000
  475. #define SGRC_USER              0x0001
  476. #define SGRC_PARAMERROR        0x0002
  477. #define SGRC_RC                0x0004
  478. #define SGRC_RECOGNIZER        0x0008
  479. #define SGRC_DICTIONARY        0x0010
  480. #define SGRC_INIFILE           0x0020
  481.  
  482. #define GetWEventRef()         (LOWORD(GetMessageExtraInfo()))
  483.  
  484. HREC WINAPI InstallRecognizer(LPSTR);
  485. VOID WINAPI UninstallRecognizer(HREC);
  486. UINT WINAPI GetGlobalRC(LPRC, LPSTR, LPSTR, int);
  487. UINT WINAPI SetGlobalRC(LPRC, LPSTR, LPSTR);
  488. VOID WINAPI RegisterPenApp(UINT, BOOL);
  489. UINT WINAPI IsPenAware(VOID);
  490. BOOL WINAPI SetRecogHook(UINT, UINT, HWND);
  491. VOID WINAPI InitRC(HWND, LPRC);
  492. REC  WINAPI Recognize(LPRC);
  493. REC  WINAPI RecognizeData(LPRC, HPENDATA);
  494. BOOL WINAPI TrainInk(LPRC, HPENDATA, LPSYV);
  495. BOOL WINAPI TrainContext(LPRCRESULT, LPSYE, int, LPSYC, int);
  496. REC  WINAPI ProcessWriting(HWND, LPRC);
  497. BOOL WINAPI CorrectWriting(HWND, LPSTR, UINT, LPRC, DWORD, DWORD);
  498. VOID WINAPI EmulatePen(BOOL);
  499. int  WINAPI GetSymbolMaxLength(LPSYG);
  500. int  WINAPI GetSymbolCount(LPSYG);
  501. VOID WINAPI FirstSymbolFromGraph(LPSYG, LPSYV, int, int FAR *);
  502. UINT WINAPI EnumSymbols(LPSYG, WORD, ENUMPROC, LPVOID);
  503.  
  504. /****** Miscellaneous Functions *********************************************/
  505.  
  506. BOOL WINAPI TPtoDP(LPPOINT, int);
  507. BOOL WINAPI DPtoTP(LPPOINT, int);
  508. VOID WINAPI BoundingRectFromPoints(LPPOINT, int, LPRECT);
  509. BOOL WINAPI SymbolToCharacter(LPSYV, int, LPSTR, LPINT);
  510. int  WINAPI CharacterToSymbol(LPSTR, int, LPSYV);
  511. UINT WINAPI GetVersionPenWin(VOID);
  512. BOOL WINAPI ExecuteGesture(HWND, SYV, LPRCRESULT);
  513.  
  514. /****** RC Options and Flags  ***********************************************/
  515.  
  516. #define ALC_ALL                0x000043FFL
  517. #define ALC_DEFAULT            0x00000000L
  518. #define ALC_LCALPHA            0x00000001L
  519. #define ALC_UCALPHA            0x00000002L
  520. #define ALC_ALPHA              0x00000003L
  521. #define ALC_NUMERIC            0x00000004L
  522. #define ALC_ALPHANUMERIC       0x00000007L
  523. #define ALC_PUNC               0x00000008L
  524. #define ALC_MATH               0x00000010L
  525. #define ALC_MONETARY           0x00000020L
  526. #define ALC_OTHER              0x00000040L
  527. #define ALC_WHITE              0x00000100L
  528. #define ALC_NONPRINT           0x00000200L
  529. #define ALC_GESTURE            0x00004000L
  530. #define ALC_USEBITMAP          0x00008000L
  531. #define ALC_DBCS               0x00000400L
  532. #define ALC_HIRAGANA           0x00010000L
  533. #define ALC_KATAKANA           0x00020000L
  534. #define ALC_KANJI              0x00040000L
  535. #define ALC_OEM                0x0FF80000L
  536. #define ALC_RESERVED           0xF0003800L
  537. #define ALC_NOPRIORITY         0x00000000L
  538. #define ALC_SYSMINIMUM (ALC_ALPHANUMERIC | ALC_PUNC | ALC_WHITE | ALC_GESTURE)
  539.  
  540. #define MpAlcB(lprc,i) ((lprc)->rgbfAlc[((i) & 0xff) >> 3])
  541. #define MpIbf(i)       ((BYTE)(1 << ((i) & 7)))
  542.  
  543. #define SetAlcBitAnsi(lprc,i)      do {MpAlcB(lprc,i) |= MpIbf(i);} while (0)
  544. #define ResetAlcBitAnsi(lprc,i)    do {MpAlcB(lprc,i) &= ~MpIbf(i);} while (0)
  545. #define IsAlcBitAnsi(lprc, i)      ((MpAlcB(lprc,i) & MpIbf(i)) != 0)
  546.  
  547. #define RCD_DEFAULT            0
  548. #define RCD_LR                 1
  549. #define RCD_RL                 2
  550. #define RCD_TB                 3
  551. #define RCD_BT                 4
  552.  
  553. #define RCO_NOPOINTEREVENT     0x00000001L
  554. #define RCO_SAVEALLDATA        0x00000002L
  555. #define RCO_SAVEHPENDATA       0x00000004L
  556. #define RCO_NOFLASHUNKNOWN     0x00000008L
  557. #define RCO_TABLETCOORD        0x00000010L
  558. #define RCO_NOSPACEBREAK       0x00000020L
  559. #define RCO_NOHIDECURSOR       0x00000040L
  560. #define RCO_NOHOOK             0x00000080L
  561. #define RCO_BOXED              0x00000100L
  562. #define RCO_SUGGEST            0x00000200L
  563. #define RCO_DISABLEGESMAP      0x00000400L
  564. #define RCO_NOFLASHCURSOR      0x00000800L
  565. #define RCO_COLDRECOG          0x00008000L
  566.  
  567. #define RCP_LEFTHAND           0x0001
  568. #define RCP_MAPCHAR            0x0004
  569.  
  570. #define RCOR_NORMAL            1
  571. #define RCOR_RIGHT             2
  572. #define RCOR_UPSIDEDOWN        3
  573. #define RCOR_LEFT              4
  574.  
  575. #define RRM_STROKE             0
  576. #define RRM_SYMBOL             1
  577. #define RRM_WORD               2
  578. #define RRM_NEWLINE            3
  579. #define RRM_COMPLETE           16
  580.  
  581. #define RCIP_ALLANSICHAR       0x0001
  582. #define RCIP_MASK              0x0001
  583.  
  584. #define CWR_STRIPCR            0x00000001L
  585. #define CWR_STRIPLF            0x00000002L
  586. #define CWR_STRIPTAB           0x00000004L
  587. #define CWR_SINGLELINEEDIT     0x00000007L
  588. #define CWR_TITLE              0x00000010L
  589. #define CWR_KKCONVERT          0x00000020L
  590.  
  591. #define MAP_GESTOGES                            (RCRT_GESTURE|RCRT_GESTURETRANSLATED)
  592. #define MAP_GESTOVKEYS                  (RCRT_GESTURETOKEYS|RCRT_ALREADYPROCESSED)
  593.  
  594. #define IsGestureToGesture(lprcresult)  (((lprcresult)->wResultstype & MAP_GESTOGES \
  595.                                                                                                          ) == MAP_GESTOGES)
  596.  
  597. #define IsGestureToVkeys(lprcresult)    (((lprcresult)->wResultstype & MAP_GESTOVKEYS \
  598.                                                                                                          ) == MAP_GESTOVKEYS)
  599.  
  600. #define SetAlreadyProcessed(lprcresult) ((lprcresult)->wResultsType = ((lprcresult)->wResultsType \
  601.                                                                                                                 & ~RCRT_GESTURETOKEYS) | RCRT_ALREADYPROCESSED)
  602.  
  603. /****** Pen Data Type *******************************************************/
  604.  
  605. typedef struct tagPENDATAHEADER
  606.    {
  607.    UINT wVersion;
  608.    UINT cbSizeUsed;
  609.    UINT cStrokes;
  610.    UINT cPnt;
  611.    UINT cPntStrokeMax;
  612.    RECT rectBound;
  613.    UINT wPndts;
  614.    int  nInkWidth;
  615.    DWORD rgbInk;
  616.    }
  617.    PENDATAHEADER, FAR *LPPENDATAHEADER, FAR *LPPENDATA;
  618.  
  619. #define PDTS_LOMETRIC          0x0000
  620. #define PDTS_HIMETRIC          0x0001
  621. #define PDTS_HIENGLISH         0x0002
  622. #define PDTS_SCALEMAX          0x0003
  623. #define PDTS_DISPLAY           0x0003
  624. #define PDTS_ARBITRARY         0x0004
  625. #define PDTS_SCALEMASK         0x000F
  626. #define PDTS_STANDARDSCALE     PDTS_HIENGLISH
  627.  
  628. #define PDTS_NOPENINFO         0x0100
  629. #define PDTS_NOUPPOINTS        0x0200
  630. #define PDTS_NOOEMDATA         0x0400
  631. #define PDTS_NOCOLINEAR        0x0800
  632. #define PDTS_COMPRESSED        0x8000
  633. #define PDTS_COMPRESSMETHOD    0x00F0
  634. #define PDTS_COMPRESS2NDDERIV  0x0010
  635.  
  636. #define PDTT_DEFAULT           0x0000
  637. #define PDTT_PENINFO           PDTS_NOPENINFO
  638. #define PDTT_UPPOINTS          PDTS_NOUPPOINTS
  639. #define PDTT_OEMDATA           PDTS_NOOEMDATA
  640. #define PDTT_COLINEAR          PDTS_NOCOLINEAR
  641. #define PDTT_COMPRESS          PDTS_COMPRESSED
  642. #define PDTT_DECOMPRESS        0x4000
  643. #define PDTT_ALL (PDTT_PENINFO|PDTT_UPPOINTS|PDTT_OEMDATA|PDTT_COLINEAR)
  644.  
  645. #define DestroyPenData(hpendata) (GlobalFree(hpendata)==NULL)
  646. #define EndEnumStrokes(hpendata) GlobalUnlock(hpendata)
  647.  
  648. BOOL WINAPI IsPenEvent(UINT, LONG);
  649. BOOL WINAPI GetPenAsyncState(UINT);
  650.  
  651. BOOL WINAPI GetPenDataInfo(HPENDATA, LPPENDATAHEADER, LPPENINFO, DWORD);
  652. BOOL WINAPI GetPenDataStroke(LPPENDATA, UINT, LPPOINT FAR *, LPVOID FAR *, LPSTROKEINFO );
  653. BOOL WINAPI GetPointsFromPenData(HPENDATA, UINT, UINT, UINT, LPPOINT);
  654. VOID WINAPI DrawPenData(HDC, LPRECT, HPENDATA);
  655. BOOL WINAPI MetricScalePenData(HPENDATA, UINT);
  656. BOOL WINAPI ResizePenData(HPENDATA, LPRECT);
  657. BOOL WINAPI OffsetPenData(HPENDATA, int, int);
  658. BOOL WINAPI RedisplayPenData(HDC, HPENDATA, LPPOINT, LPPOINT, int, DWORD);
  659. HPENDATA  WINAPI CompactPenData(HPENDATA, UINT );
  660. HPENDATA  WINAPI DuplicatePenData(HPENDATA, UINT);
  661. HPENDATA  WINAPI CreatePenData(LPPENINFO, int, UINT, UINT);
  662. HPENDATA  WINAPI AddPointsPenData(HPENDATA, LPPOINT, LPVOID, LPSTROKEINFO);
  663. LPPENDATA WINAPI BeginEnumStrokes(HPENDATA );
  664.  
  665. /****** New Windows Messages ************************************************/
  666.  
  667. #define WM_RCRESULT            (WM_PENWINFIRST+1)
  668. #define WM_HOOKRCRESULT        (WM_PENWINFIRST+2)
  669. #define WM_GLOBALRCCHANGE      (WM_PENWINFIRST+3)
  670. #define WM_SKB                 (WM_PENWINFIRST+4)
  671. #define WM_HEDITCTL            (WM_PENWINFIRST+5)
  672.  
  673. /****** Dictionary **********************************************************/
  674.  
  675. #define cbDictPathMax          255
  676. #define DIRQ_QUERY             1
  677. #define DIRQ_DESCRIPTION       2
  678. #define DIRQ_CONFIGURE         3
  679. #define DIRQ_OPEN              4
  680. #define DIRQ_CLOSE             5
  681. #define DIRQ_SETWORDLISTS      6
  682. #define DIRQ_STRING            7
  683. #define DIRQ_SUGGEST           8
  684. #define DIRQ_ADD               9
  685. #define DIRQ_DELETE            10
  686. #define DIRQ_FLUSH             11
  687. #define DIRQ_RCCHANGE          12
  688. #define DIRQ_SYMBOLGRAPH       13
  689. #define DIRQ_INIT              14
  690. #define DIRQ_CLEANUP           15
  691. #define DIRQ_COPYRIGHT         16
  692.  
  693.  
  694. #define DIRQ_USER              4096
  695.  
  696. BOOL WINAPI DictionarySearch(LPRC, LPSYE, int, LPSYV, int);
  697.  
  698. /****** Handwriting Edit Control ********************************************/
  699.  
  700. #define HE_GETRC               3
  701. #define HE_SETRC               4
  702. #define HE_GETINFLATE          5
  703. #define HE_SETINFLATE          6
  704. #define HE_GETUNDERLINE        7
  705. #define HE_SETUNDERLINE        8
  706. #define HE_GETINKHANDLE        9
  707. #define HE_SETINKMODE          10
  708. #define HE_STOPINKMODE         11
  709. #define HE_GETRCRESULTCODE     12
  710. #define HE_DEFAULTFONT         13
  711. #define HE_CHARPOSITION        14
  712. #define HE_CHAROFFSET          15
  713.  
  714. #define HE_GETRCRESULT         22
  715.  
  716. #define HE_KKCONVERT           30
  717. #define HE_GETKKCONVERT        31
  718. #define HE_CANCELKKCONVERT     32
  719. #define HE_FIXKKCONVERT        33
  720.  
  721. #define HEKK_DEFAULT           0
  722. #define HEKK_CONVERT           1
  723. #define HEKK_CANDIDATE         2
  724.  
  725. #define HEP_NORECOG            0
  726. #define HEP_RECOG              1
  727. #define HEP_WAITFORTAP         2
  728.  
  729. #define HN_ENDREC              4
  730. #define HN_DELAYEDRECOGFAIL    5
  731.  
  732. #define HN_RCRESULT            20
  733.  
  734. #define HN_ENDKKCONVERT        30
  735.  
  736. typedef struct tagRECTOFS
  737.    {
  738.    int dLeft;
  739.    int dTop;
  740.    int dRight;
  741.    int dBottom;
  742.    }
  743.    RECTOFS, FAR *LPRECTOFS;
  744.  
  745. /****** Boxed Edit Control **************************************************/
  746.  
  747. typedef struct tagBOXLAYOUT
  748.    {
  749.    int cyCusp;
  750.    int cyEndCusp;
  751.    UINT style;
  752.    DWORD rgbText;
  753.    DWORD rgbBox;
  754.    DWORD rgbSelect;
  755.    }
  756.    BOXLAYOUT, FAR *LPBOXLAYOUT;
  757.  
  758. #define BXS_NONE               0U
  759. #define BXS_RECT               1U
  760. #define BXS_ENDTEXTMARK        2U
  761. #define BXS_MASK               3U
  762.  
  763. #define HE_GETBOXLAYOUT        20
  764. #define HE_SETBOXLAYOUT        21
  765.  
  766. #define BXD_CELLWIDTH          12
  767. #define BXD_CELLHEIGHT         16
  768. #define BXD_BASEHEIGHT         13
  769. #define BXD_BASEHORZ           0
  770. #define BXD_CUSPHEIGHT         2
  771. #define BXD_ENDCUSPHEIGHT      4
  772.  
  773. /****** Screen Keyboard *****************************************************/
  774.  
  775. typedef struct tagSKBINFO
  776.    {
  777.    HWND hwnd;
  778.    UINT nPad;
  779.    BOOL fVisible;
  780.    BOOL fMinimized;
  781.    RECT rect;
  782.    DWORD dwReserved;
  783.    }
  784.    SKBINFO, FAR *LPSKBINFO;
  785.  
  786. #define SKB_QUERY              0x0000
  787. #define SKB_SHOW               0x0001
  788. #define SKB_HIDE               0x0002
  789. #define SKB_CENTER             0x0010
  790. #define SKB_MOVE               0x0020
  791. #define SKB_MINIMIZE           0x0040
  792. #define SKB_FULL               0x0100
  793. #define SKB_BASIC              0x0200
  794. #define SKB_NUMPAD             0x0400
  795.  
  796. #define OBM_SKBBTNUP           32767
  797. #define OBM_SKBBTNDOWN         32766
  798. #define OBM_SKBBTNDISABLED     32765
  799.  
  800. #define SKN_CHANGED            1
  801.  
  802. #define SKN_POSCHANGED         1
  803. #define SKN_PADCHANGED         2
  804. #define SKN_MINCHANGED         4
  805. #define SKN_VISCHANGED         8
  806. #define SKN_TERMINATED         0xffff
  807.  
  808. BOOL WINAPI ShowKeyboard(HWND, UINT, LPPOINT, LPSKBINFO);
  809.  
  810. /****** New ComboBox Notifications  *****************************************/
  811.  
  812. #define CBN_ENDREC             16
  813. #define CBN_DELAYEDRECOGFAIL   17
  814. #define CBN_RCRESULT           18
  815.  
  816.  
  817. #ifdef __cplusplus
  818. }                       /* End of extern "C" { */
  819. #endif  /* __cplusplus */
  820.  
  821. #ifndef RC_INVOKED
  822. #pragma pack(pop)       /* Revert to default packing */
  823. #endif  /* RC_INVOKED */
  824.  
  825. #endif  /* __PENWIN_H */
  826.